# -*- coding: utf-8 -*-

# 导入models包
from django.db import models

# Create your models here.

"""
班级模型
"""
class Class(models.Model):

    name = models.CharField(verbose_name=u'名称', max_length=64)

    class Meta:
        verbose_name = u'班级'
        verbose_name_plural = u'班级'
        ordering = ['name', '-id']

    def __unicode__(self):
        return self.name

"""
学科
"""
class Subject(models.Model):

    name = models.CharField(verbose_name=u'科目', max_length=64)

    class Meta:
        verbose_name = u'学科'
        verbose_name_plural = u'学科'
        ordering = ['name', '-id']

    def __unicode__(self):
        return self.name

"""
学生模型
"""
class Students(models.Model):

    # id 自增长ID 主键 可不写
    # id = models.AutoField(verbose_name=u'ID', primary_key=True)

    # 姓名 字符类型 长度255
    name = models.CharField(verbose_name=u'姓名', max_length=255)

    # 是否免费 布尔类型 默认为True
    free = models.BooleanField(verbose_name=u'免费', default=True)

    # 评分 数字类型 默认为0
    score = models.IntegerField(verbose_name=u'评分', default=0)

    # 性别 小数字类型 默认为男
    SEXS = {
        (0, u'男'),
        (1, u'女')
    }
    sex = models.SmallIntegerField(verbose_name=u'性别', default=0, choices=SEXS)

    # 类型 数字类型 默认为初级
    TYPES = {
        (1, '初级'),
        (2, '中级'),
        (3, '高级')
    }
    type = models.IntegerField(verbose_name=u'类型', default=1, choices=TYPES)

    # 生日 时间类型
    birthday = models.DateTimeField(verbose_name=u'生日')

    # 照片 图片类型
    photo = models.ImageField(verbose_name=u'照片', upload_to='img')

    # 介绍 文本类型 允许为空值 空值存为NULL
    description = models.TextField(verbose_name=u'介绍', blank=True, null=True)

    # 创建时间 时间类型 添加时自动写入当前时间
    ctime = models.TimeField(verbose_name=u'创建时间', auto_now_add=True)

    # 备注
    remark = models.CharField(verbose_name=u'备注', max_length=255, default=u'')

    # 班级
    cls = models.ForeignKey(Class, verbose_name=u'班级')

    # 学科
    subject = models.ManyToManyField(Subject, verbose_name=u'学科')

    # 年龄
    def age(self):
        import datetime
        _age = datetime.datetime.now().year - self.birthday.year
        return str(_age) + u'岁'
    age.short_description = u'年龄'


    class Meta:
        verbose_name = u'学生'
        verbose_name_plural = u'学生'
        ordering = ['id']

    def __unicode__(self):
        return self.name

"""
ID卡
"""
class IDCard(models.Model):

    number = models.CharField(verbose_name=u'卡号', max_length=30)
    student = models.OneToOneField(Students, verbose_name=u'学生')


    class Meta:
        verbose_name = u'ID卡'
        verbose_name_plural = u'ID卡'
        ordering = ['id']

    def __unicode__(self):
        return self.number
